package com.piece.core.redis.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.util.List;
import java.util.Properties;

@Data
@Builder
@AllArgsConstructor
public class RedisMonitorDTO {

    /**
     * Redis info指令结果
     * <p>
     * redis_version: Redis版本
     * redis_mode: 运行模式
     * tcp_port: 端口
     * connected_clients: 客户端数
     * uptime_in_days: 运行时间(天)
     * used_memory_human: 使用内存
     * used_cpu_user_children: 使用CPU
     * maxmemory_human: 内存配置
     * aof_enabled: AOF
     * rdb_last_bgsave_status: RDB
     * instantaneous_input_kbps: 网络入口/出口
     * </p>
     */
    private Properties info;

    /**
     * Redis key数量
     */
    private Long dbSize;

    /**
     * Redis 命令统计结果数组
     */
    private List<CommandStat> commandStats;

    /**
     * Redis 命令统计结果
     */
    @Data
    @Builder
    @AllArgsConstructor
    public static class CommandStat {

        /**
         * Redis 命令
         */
        private String command;

        /**
         * 调用次数
         */
        private Integer calls;

        /**
         * 消耗时长
         */
        private Long usec;
    }
}